package com.jml.程序员;

import org.junit.Test;

import java.util.HashMap;
import java.util.Map;

/**
 * 给定一个字符串，编写一个函数判定其是否为某个回文串的排列之一。
 * 回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。
 * 回文串不一定是字典当中的单词。
 *
 * 示例1：
 * 输入："tactcoa"
 * 输出：true（排列有"tacocat"、"atcocta"，等等）
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/palindrome-permutation-lcci
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * 解题思路：字符串为偶数，回文数每个字符的个数一定是偶数
 *           字符串为奇数，回文数只有一个字符为奇数，其他字符个数和为偶数
 *
 */
public class 回文排列 {
    @Test
    public boolean my(){
        String s = "";
        Map<Character,Integer> map = new HashMap<>();
        for (int i = 0; i < s.length(); i++) {
            if(map.get(s.charAt(i))!=null){
                map.put(s.charAt(i),map.get(s.charAt(i))+1);
            }else {
                map.put(s.charAt(i), 1);
            }
        }
        int i =0;
        for(Map.Entry<Character,Integer> a:map.entrySet()){
            if(s.length()%2==0){
                if(a.getValue()%2!=0){
                    return false;
                }
            }else{
                if(a.getValue()%2!=0){
                    i++;
                    if(i>1){
                        return false;
                    }
                }
            }
        }
        return true;
    }
}
